/**
 * 
 */
package com.tjtt.tdm.flow.service;

import java.io.IOException;
import java.util.Map;
import java.util.List;
import com.tjtt.tdm.base.PageResult;
import com.tjtt.tdm.exception.ServiceException;
import com.tjtt.tdm.flow.bean.FlowDetailed;
import com.tjtt.tdm.flow.bean.FlowTask;
import com.tjtt.tdm.flow.bean.Flowtype;

/**
 * @author tan
 *
 */
public interface IWorkflowService {
	
	/**
	 * 待办列表（最新方法）
	 * @param filterMap
	 * @return
	 */
	public PageResult queryWaitWorkListNew(Map<String, String> filterMap);
	
	public PageResult queryDaiqian(Map<String, String> filterMap);
	
	public PageResult queryYiban(Map<String, String> filterMap);
	
	public PageResult queryBanjie(Map<String, String> filterMap);
	
	public PageResult queryQingqiu(Map<String, String> filterMap);
	
	public PageResult queryCaosong(Map<String, String> filterMap);
	
	public PageResult queryWancheng(Map<String, String> filterMap);
	
	public PageResult queryJinxing(Map<String, String> filterMap);
	
	public PageResult queryFlowByState(Map<String, String> filterMap);
	
	/**
	 * 我的请求列表（最新方法）
	 * @param filterMap
	 * @return
	 */
	public PageResult queryMyRequestExec(Map<String, String> filterMap);
	public PageResult queryReportlist(Map<String, String> filterMap);

	/**
	 * 我的协作
	 * @param filterMap
	 * @return
	 */
	public PageResult queryXieZuoWaitWorkListNew(Map<String, String> filterMap);
	
	/**
	 * 我的待签
	 * @param filterMap
	 * @return
	 */
	public PageResult queryDaiQianWaitWorkListNew(Map<String, String> filterMap);
	public PageResult queryWaitWorkListNewMyTask(Map<String, String> filterMap);

	public PageResult queryWaitExpWorkListNew(Map<String, String> filterMap);
	
	/**
	 * 确认签收
	 * @param ids
	 * @param userId
	 * @param userName
	 */
	public void updateQianShou(String ids,String userId,String userName);

	/**
	 * 我的代办试验显示到jqrid
	 * @return
	 * @throws IOException
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2013-2-22 下午03:53:34
	 */
	public PageResult queryWaitWorkList(Map<String, String> filterMap);

	public String getStates(long id);
	
	public List getFlowDetailList(long id);
	
	public String getJianyanstate(String id,String state);
	
	public String getFlowfilepath(String id);
	/**
	 * 我的已办试验显示到jqrid
	 * @return
	 * @throws IOException
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2013-2-22 下午03:53:34
	 */
	public PageResult queryDoneWorkList(Map<String, String> filterMap);
	/**
	 * 查看全部流程操作详细
	 * @return
	 * @throws IOException
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2013-3-12 下午02:23:26
	 */
	public PageResult queryWorkDetailList(String id,
			Map<String, String> filterMap);
	/**
	 * 查看某一个流程的操作详细
	 * @return
	 * @throws IOException
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2013-3-12 下午02:23:26
	 */
	public PageResult queryWorkDetailList2(String stateid, String id,
			Map<String, String> filterMap);
	/**
	 * 我的理化中心代办试验显示到jqrid
	 * @return
	 * @throws IOException
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2013-2-22 下午03:53:34
	 */
	public PageResult queryRationalizeWaitWorkList(Map<String, String> filterMap);

	/**
	 * 我的计量中心待办列表显示
	 * @param filterMap
	 * @return
	 *@param
	 *@return
	 *@author 詹晓梅
	 *@date 2013-4-15 下午07:21:04
	 */
	public PageResult queryWaitWorkListJL(Map<String, String> filterMap);
	
	/**
	 * 周检
	 * @param filterMap
	 * @return
	 *@param
	 *@return
	 *@author zhanxm
	 *@date 2013-4-27 上午10:32:05
	 */
	public PageResult queryWaitWorkListJLTest(Map<String, String> filterMap);

	public int getUndoWorkCount(Map<String, String> filterMap);
	/**
	 * 
	 *方法描述：查询试验中心的试验流程
	 *@author: wangxd
	 *@date： 2013-4-26 上午10:16:48
	 *@param id
	 *@param instanceid
	 *@return
	 */
	
	public List getTestCenterFlowDetailList(long id,long instanceid);
	
	/**
	 * 查询待办操作详情列表
	 * @param filterMap
	 * @return
	 */
	public PageResult queryWaitWorkDetailList(Map<String, String> filterMap);
    /**
    * 
    *方法描述：查看试验中心流程的操作详细记录
    *@author: wangxd
    *@date： 2013-5-28 下午06:57:21
    *@param filterMap
    *@return
    */
	public PageResult queryTestCenterWaitWorkDetailList(Map<String, String> filterMap);

	public FlowTask getFlowTaskById(String id);

	public void updateFlowTask(String ids, String state);
	/**
	 * 
	 *方法描述：根据操作人的操作记录查询流程的当前状态
	 *@author: wangxd
	 *@date： 2013-6-7 上午09:34:26
	 *@param instanceId
	 *@param flowTypeId
	 *@param flowStateId
	 *@param flowStateId1
	 *@return
	 */
	public List<FlowTask> queryTaskByIdName(Long instanceId,Long flowTypeId) ;

	public PageResult queryFaQiWorkExec(Map<String, String> filterMap);

	public List<Flowtype> getFlowtypeList();
	
	public List getStandardList();

	public void changeFlowTaskUngentExec(String id);

	public PageResult queryRationalizeDataList(Map<String, String> filterMap);

	public List findRationData(Map filterMap);

	public PageResult queryRationalizeDataZongList(Map<String, String> filterMap);
	
	/*
	 * 查询流程状态及数量   一般、加急、延期
	 * wxj
	 */
	public List queryFlowtaskType(Map filterMap);
	
	public PageResult queryYiqigllist(Map<String, String> filterMap);
}
